跳到主要内容

「进阶0x3B」GCD

· 阅读需 1 分钟

没完没了的sb数学题,推导一下就知道怎么切了

首先需要gcd(x,y)gcd(x,y)是一个质数,就是gcd(x,y)=pgcd(x,y)=p

{x=x0×py=y0×p\begin{cases} &x=x0\times p\\ &y=y0\times p \end{cases}

又因为gcd(x,y)=pgcd(x,y)=p,所以gcd(x0,y0)=1gcd(x0,y0)=1,这样的数的个数不就是ϕ[x]\phi [x]个吗

然后求个和,可以得到最终答案就是∑i=1n∑j∣i2×ϕ[i/j]−1\sum_{i=1}^{n}\sum_{j|i}2\times \phi[i/j]-1

这里乘二是因为x,yx,y之间没有规定大小关系,可以是(x,y)(x,y)或(y,x)(y,x),再减去11是删去x==yx==y的情况多乘了一次二

但是这样的复杂度也才O(nlog(n))O(nlog(n)),还不足以通过本题

发现有很多重复计算的地方,思考一下,其实套个前缀和就可以O(n)O(n)解决了,就是直接统计所有满足条件的答案